3-3. 社内WWWサ−バと全文検索
(1) サ−バ配置ネットワ−ク図 '96
* 各サ−バの配置とクライアント
| インタ−ネットへ
----- WWW-A 外部公開用WWW --------
|WWW| DNS1次 |Router|
----- --------
| |
----*---------*---------------------------- nix.co.jj バリアネット
|
管理者用のホスト |
------ ------ ------ WWW-B 外部公開用WWWの予備デ−タ
|Yobi| |Gate| |Mail| 社内文書共通デ−タ用WWW
------ ------ ------
| | |
--------------*--------*------------------- nix.co.jj 内部ネット
| |
------- WWW-1 ------- WWW-2 グル−プ専用WWW
|Serv1| |Serv2|
------- CAD ------- CAD サ−バ << キ−マン用。
| |
------------- -------------
| | | | | | クライアント << 一般ユ−ザ用。
a1 a2 a3 b1 b2 b3
[ 内部ネットのグル−プ単位の管理 ]
上記の図には Serv1 と Serv2 という2つのグル−プがある。グル−プはCADデ−タを
共有して使う単位である。ホスト Serv2 はホスト b1,b2,b3 におけるCADデ−タの保
管ホストであり、例えば NFS によってアクセスできるようにする。 さらにグル−プ毎に
文書管理のためのWWWサ−バをおく。グル−プにはそれぞれキ−マンをおき、キ−マン
がCADデ−タとWWWデ−タを管理することとする。
[ 内部ネットの端末ホストの管理 ]
例えばグル−プ Serv2 にホスト b3 を追加するには、b3 の /etc/hosts にCADと文書
管理のWWWと電子メ−ルサ−バのアドレスを登録する。Serv2,Mail,Yobi である。他の
グル−プのCADデ−タにもアクセスしたいなら Serv1 も登録する。 経路制御の設定は
Serv2 へのデフォルト経路にする。動的経路制御が簡単であるが常にネットワ−クの設定
を把握できるようにして、トラブルに対処し易くする。
[ WWWサ−バの配置 ]
□ WWW-A 各グル−プ毎に文書管理用のWWWサ−バをもち、外部に
| 出していい情報を WWW-B にのせる。 しばらくの社内閲覧
---------------------- 期間を設けた後、外部発信用ホストの WWW-A にデ−タを
| コピ−する。これにより WWW-B は WWW-A のバックアップ
□ □ WWW-B の働きもさせる。
| |
---------------------- WWW-A,B はユ−ザ master が管理する。 master だけがフ
| | ァイル作成消去ができる。WWW-1,2 はユ−ザ keyman が管
□ WWW-1 □ WWW-2 理する。
[ 内部ホストからのインタ−ネットアクセス ]
------ DNS Gate ではIPアドレス変換しているが、別に問題はない。
|Gate|
------
| ホスト c の /etc/resolv.conf
----------*----------- -------------------------------
| |nameserver GateのIPアドレス
□ c
[ 内部ネットでの電子メ−ルのホスト名管理 ]
------ ホスト c から d に電子メ−ルを送るには、メ−ルサ−バ
|Mail| Mailを介して行われる。 c は d のアドレスを知る必要は
------ なく Mail だけでよい。 Mail は全ホストのアドレスを知
| っている必要がある。
----------*------------
| | c の /etc/hosts Mail の /etc/hosts
□ c □ d ---------------- -------------------------
|xxx Mail |メ−ルを送る全部のホスト
[ CADデ−タのアクセス ]
| | グル−プ Serv2 の例で、 ホスト b1,b2,b3 はお互いにア
------- ------- ドレスを知る必要はない。Serv2 ホストさえ知っていれば
|Serv1| CAD |Serv2| CAD よい。b1 が Serv1 にアクセスするのは実装による。とり
------- ------- あえずここまでは考慮しない。
| |
-------- -------- b3 の /etc/hosts
| | | | ----------------
a1 a2 b1 .. b3 |xxx Serv2
* WWWデ−タのアクセス図
WWW-A WWW-B 社内 Netscape
------------ ------------ アクセス ---------------------
|一般公開用| コピ− |一般公開用| *――――― |一般公開用デ−タ |
|用デ−タ | <----------- |デ−タ | ――― | 社内文書共通デ−タ|
|----------| |----------| | |-------------------|
|外部特別ユ| |社内文書 | *―― |部門用非公開デ−タ |___
|−ザ公開用| ----- |共通デ−タ| ---- |部門用公開デ−タ |_ |
------------ | ------------ | ---------------------||
| | ||
認証 WWW-2 |リンク WWW-1 ||
| ------------ | ------------ ||
|リンク |外部特別ユ| | | 左に同じ | ||
-------> |−ザ公開用| | | | ||
|----------| | |----------| ||
|社内文書 | <--- | 左に同じ | ||
|共通デ−タ| | | ||
|----------| |----------| ||
|部門用公開| |部門用公開| ||
|デ−タ | |デ−タ | *――― |
|----------| |----------| |
|部門用非公| |部門用非公| |
|開デ−タ | |開デ−タ | *――――
------------ ------------
・WWW-A のWWWサ−バ
[/usr/nix/www]---[docs]---[public] 一般公開用デ−タ
外部特別ユ−ザ公開用
・WWW-B のWWWサ−バ
[/usr/nix/www]---[docs]---[public] 一般公開用予備デ−タ
|-[common] 社内文書共通デ−タ
・WWW-1,2 のWWWサ−バ
[/usr/nix/www]---[docs]---[section] 部門用公開デ−タ
|-[private] 部門用非公開デ−タ
|-[special] 外部特別ユ−ザ公開デ−タ
|-[temp] 登録したいデ−タを放り込む場所
共通構造: [/usr/nix/www]---[adm]--- passwd
|
|-[cgi-bin]
|-[logs]------ access,cache,error,proxy
|-[cache]
|-[docs]
* 内部用WWWデ−タの作成
・先ずは静的なデ−タを対象とし、グル−プウェア的なデ−タは対象としない。グル−プ
ウェアはWWWサ−バだけでは実現できない。何らかの専用ソフトがいる。
・ともかく誰でもいいからWWWサ−バのディレクトリにデ−タを放りこませる。それで
ともかくブラウザで、どこからでもデ−タ(ドキュメント)を見れるようにする。
・グル−プ専用WWWのとりあえずのデ−タは /usr/nix/www/docs/temp に入れることに
する。社内文書共通、社外用デ−タの扱いは別途検討の必要があるが。
・デ−タの整理、インデックスの作成を INDY の dirview によるGUI環境でできるよ
うにする。雛型となる index.html はあらかじめ用意しておく。
・これをキ−マンが定期的にチェックし、共通なデ−タを抜き出し専用ディレクトリを作
ってまとめる。それと同時に HTML で見出しを作る。見出しの index.html ファイルは
エディタ−で編集するしかない。これぐらいはキ−マンさんに覚えてもらう。
(2) WWWサ−バ・ホストの設定 '96
* httpd デ−モンの稼働 ( INDY IRIX 5.3 の場合 )
全てのWWWサ−バにはとりあえず CERN httpd デ−モンを使う。常時稼働とし、ポ−ト
番号はデフォルトの80とする。
% cd /etc/config << root で作業していくこと。
% echo on > cern
/etc/init.d/cern << このようにファイルを作成する。
-----------------------------------------------------------
|#! /bin/sh
|IS_ON=/etc/chkconfig
|if test ! -x $IS_ON ; then
| IS_ON=true
|fi
|if $IS_ON verbose ; then
| ECHO=echo
|else
| ECHO=:
|fi
|case $1 in
| 'start')
| if $IS_ON cern
| /usr/local/bin/httpd
| fi
| ;;
| 'stop')
| ;; 停止するための手続きを記述
|esac
% cd /etc/rc2.d
% ln -s /etc/init.d/cern S81cern << 81番が空いているとして S81 cern とする。
* WWW-A の設定 ( ホスト WWW )
/etc/httpd.conf
-----------------------------------------
|ServerRoot /usr/nix/www
|HostName www.nix.co.jj
|ServerType StandAlone
|Port 80
|UserId nobody
|GroupId nogroup
|
|Protection roule1 {
| ServerId TAWASHI << 何でも構わない。
| AuthType Basic << Basic は取り決め。
| PasswdFile /usr/nix/www/adm/passwd
| Mask nix << アクセス可能なユ−ザ名を nix とする。
|}
|Protect /private/* roule1
|
|Exec /cgi-bin/* /usr/nix/www/cgi-bin/*
|Pass /* /usr/nix/www/docs/*
|Pass http:* << HTTP のみ通すように制限。
|
|#AccessLog /usr/nix/www/logs/httpd-log << ログは取らない。
|#ErrorLog /usr/nix/www/logs/httpd-errors << 最初だけエラ−がないかログを
|LogFileDateExt log とる。安定したらやめる。
|LogFormat Common
|LogTime LocalTime
|
|#キャッシュの設定 WWWサ−バ間のトラフィックを減らすためキャッシュ機能を使う。
|# キャッシュ期間は1日とする。対象プロトコルは HTTP だけとする。
|
|Caching On On <<キャッシュをする。
|CacheRoot /usr/nix/www/cache << キャッシュデ−タをおくディレクトリ。
|CacheSize 10M << キャッシュしておく容量 10 Mbyte。
|CacheClean * 1 days << 1日だけキャッシュする。
|CacheUnused * 1 days << 別に指定しなくてもいいか。
|KeepExpired Off << これも別に指定しなくてもいいか。
|Gc On << ゴミそうじをする。
|GcDailyGc 3:00 << ゴミそうじをする時刻。
|
|NoCaching http://xxx.xxx.xx/* << キャッシュしない所があれば設定する。
[ パスワ−ド・ファイルの作成 ]
外部特別ユ−ザ公開用ディレクトリに、アクセスできるユ−ザを制限するための設定する。
ユ−ザ nix のみアクセスできるようにパスワ−ドを設定する。 ブラウザでここをクリッ
クすると、アカウント入力画面が出る。ユ−ザ名は nix、パスワ−ドは henomohe を入力
すると中に入ることができる。
# htadm -create passwd << 空のファイル passwd を先ず作る。
# htadm -adduser passwd nix henomohe << ユ−ザ名 nix、パスワ−ド henomohe。
WWW: Real name: nix tarou << 入力要求がある。リタ−ンでもよい。
* WWW-B の設定 ( ホスト Mail )
/etc/httpd.conf
-------------------------------
|ServerRoot /usr/nix/www
|HostName hostB ※キャッシュはしない。外部公開用WWWの予備であ
|ServerType StandAlone り、公開前の確認用でもあるためキャッシュはなし。
|Port 80
|UserId nobody
|GroupId nogroup
|LogFormat Common
|LogTime LocalTime
|Exec /cgi-bin/* /usr/nix/www/cgi-bin/*
|Pass /* /usr/nix/www/docs/*
* WWW-1 の設定 ( ホストServ1, dr0 とする )
/etc/httpd.conf
-------------------------------
|ServerRoot /usr/nix/www
|HostName Serv1 ※キャッシュの設定は WWW-A と同様。
|ServerType StandAlone
|Port 80
|UserId nobody
|GroupId nogroup << INDY にはこのIDはない。user ぐらいにする。
|LogFormat Common
|LogTime LocalTime
|
|Protection roule1 {
| Mask @( dr0,dr1,dr2,dr3 ) << 自グル−プのホストのみアクセス可とする。dr0,1
|} というのはホスト名である。
|Protect /private/* roule1
|Protect /special/* roule1 << 本当はパスワ−ドによる制限をかける。
|
|Exec /cgi-bin/* /usr/nix/www/cgi-bin/*
|Pass /* /usr/nix/www/docs/*
* ファイル・プロテクション
本設定は管理者が1人でいかに運用管理して行けるかに重点においている。少々のプロテ
クションの甘さはいた仕方ない。紳士的な暗黙の了解と、ファイアウォ−ルが頼みである。
グル−プが違ってもキ−マンの owner は keyman で、group は user で同じである。 つ
まり keyman でロッグインすれば、どこのグル−プのデ−タでもいじれることになる。こ
のファイル・プロテクションは、キ−マンは自部門のグル−プのデ−タのみ扱い、他グル
−プのデ−タはいじらないという了解があるということが前提になっている。もう少し厳
しくするにはグル−プ毎に group をかえる。しかし通常のUNIX環境においては、 少
々のプロテクションを施したところで、アクセスは筒抜けである。UNIXを少し知って
いる人ならなんとでもなってしまう。
ディレクトリ&ファイル | master.user.other | デ−タの区分
---------------------------|-------------------|-----------------------
WWW-A/../docs/public/ | drwx r_x r_x | 一般公開用デ−タ
/public/file | rw_ r__ r__ |
/private/ | drwx r_x r_x | 外部特別ユ−ザ公開用
ディレクトリ&ファイル | keyman.user.other | デ−タの区分
---------------------------|-------------------|-----------------------
WWW-B/../docs/public/ | drwx r_x r_x | 一般公開用予備デ−タ
/common/ | drwx r_x r_x | 社内文書共通デ−タ
| |
WWW-1/../docs/section/ | drwx r_x r_x | 部門用公開デ−タ
/private/ | drwx r_x ___ | 部門用非公開デ−タ
/private/file | rw_ r__ ___ |
注.1) .. は /usr/nix/www/ を示す。
2) ファイルのプロテクションの基本は rw_ r__ r__ とする。
[ 外部特別ユ−ザ公開用 ]
一般公開用デ−タのディレクトリに outer というディレクトリを作成し、 デ−タを入れ
ることにする。本当はマウント機能というのを用いて、内部WWWをアクセスできるよう
にしたい。しかし CERN にはその機能がないので、同一デ−タを置くことにする。しかし
マウント機能で、そもそも果たして安全か疑問も残る。
[ 部門用デ−タの扱い ]
キ−マンだけがファイルをおくことができる。とりあえず一般ユ−ザもともかくデ−タを
入れることができるようにする。これには専用のシュル・スクリプトを用意し、キ−マン
の権利で ../section/temp ディレクトリにファイル転送するようにする。 非公開デ−タ
も同じ扱いとする。
[ 部門用非公開デ−タの注意 ]
ファイル・プロテクションだけでは、他グル−プに非公開にはできない。 HTML の記述と
WWWのアクセス制限で実現する。より厳しくは group をかえる。
(3) 全文検索ソフトの調査 〜'97/08
* 全文検索ソフトの概要
社内文書管理用のWWWサ−バを立ち上げたら、できればそこから検索もしたいというこ
とになる。YAHOO など毎日お世話になっているWWWの検索エンジンの社内用を作るわけ
だ。このためには全文検索ソフトを社内WWWに組み込む。一度セットしてしまえば、後
は自動的に全文検索用のインデックスを作成することも可能だ。RDB のようにデ−タベ−
ス設計も必要ないし、手作業でインデックスを作成することもない。全文検索システムは
非常に手間いらずなのである。このためイントラネットという言葉が出る以前、YAHOO も
ない時から社内の情報検索に使えるのでないかと、一部の間では注目されていた。
96年ぐらいの時は、日本語を扱える全文検索ソフトはフリ−の WAIS と、これを富士通
が製品化したものぐらいしかなかった。 フリ−の WAIS は and 検索もできず、WWWに
組み込むのも容易ではなかった。 通常 xwais というXの画面で、検索するようになって
いた。当時のインタ−ネットではWAISサ−ビスはWWWサ−ビスと別個のものとして
あった。93年以前から WAIS( Wide Area Information Servers ) は、Z39.50 プロトコ
ル、クライアント&サ−バ方式の情報検索サ−ビスとして存在していたのだが。
それから1年経ち、製品も結構たくさんでてきた。96年のなかばには freeWAIS という
WAIS に and 検索もできるフリ−ソフトも出ている。しかし全文検索については、あまり
雑誌等で取り上げられていない。市販ソフトは結構高い。なかなかこれがいいという決め
手を探るのが難しかった。 使えるかなと思ったのが、東京の展示会で見た Open Text と
いう市販ソフトだった。国立民族博物館で採用されたとか。97年8月に今一度調べ直し
た。フリ−ソフトも増え、製品の案内もWWWに結構掲載されていた。何となくようやく、
実際使ってみよかという感じになった。
さて、どのようなソフトがあるかはさておき、実際企業で全文検索ソフトを使うには、ど
んなことが求められるか考えてみよう。先ず日本語での HTML と plain-text を扱えるの
はもちろんである。下記のことに加え、ファイルの量とインデックスの作成時間も問題に
する必要がある。インデックス・デ−タの一部削除ができないと、全部デ−タを最初から
作り直さなければならない。この時間はこれまたやってみないと分からない。それにディ
スク容量は、ファイルの全容量の倍は先ず見積もっておく必要がある。インデックスに結
構、ディスクが食われる。まあこれらのことは、最初の内は心配しなくてもいいが。
a. and や or 検索がきること。
b. Word と Excel も扱えること。
c. GIF など画像デ−タは、ファイル名で検索できること。
d. 検索時間はかかっても10秒まで。3秒以下が望ましい。
e. インデックスの追加登録、一部削除ができることが望ましい。
[ 97年8月時点で選ぶとしたら ]
フリ−ソフトで選ぶとしたら SSE-1.1 がいいかも知れない。 ただしコンパイルするのに
手間がかかりそうだが。 製品ではオムロンアルファテック(株)の Topic がいいような
気がする。 Netscape Enterprise Server、Microsoft の IIS や Exchange でも採用され
てきている。 どうも Topic という名称は SEARCH'97 Information Server と名前を変え
ているようである。この他、日本ユニソフトの Co.Co.Da for Web はどうか。評価パッケ
−ジを出したり、ドキュメントもWWWで見れるようになっている。値段も手頃だし。
* 全文検索ソフトの市販品
一口に全文検索といっても、いろいろな製品がある。概ねWWWに組み込んで使うタイプ
だが、Interleaf のようにDTPソフトに検索機能を付加したものとか。Lotus Notes の
全文検索機能だとか、選択肢が広い。また HTML のみ対象にするとか。 SGML もOKだよ
とか。Word や Excel のファイルは、フィルタ−を通して扱えるようにするやり方が多い
ようである。Open Text のようにフィルタ−もへったくれもなく、何でも検索対象にして
しまうのもある。
最近の動向として、 RDB や ODB のデ−タベ−スソフトと連携する全文検索ソフトが出て
きた。SEARCH'97 Information Server と RDB の Oracle や、 ODB の ObjectStore の組
み合わせである。また別なアプロ−チとして、 どうも RDB の中に全文検索機能を組み込
んだ製品も出てきた。RDB の Illustra である。 これには DataBlade という全文検索ソ
フトが入っている。RDB にはデ−タがあるのだから、それを活かして全文検索もできるよ
うにすれば便利である。デ−タベ−スと全文検索デ−タを別に管理しなくてもすむ。
上記は RDB や ODB を使った広域の分散ファイル検索の話である。これとは別に、個人の
パソコンのファイル検索をする製品も各種でてきている。パソコンのハ−ドディスクの容
量は、今では数 Gbyte と非常に大きくなった。外の情報検索ばかりでなく、 個人の情報
自体も検索ツ−ルが必要になりつつあるのだ。このためのソフトには、 "俊司くん" とか
QuickFINDER などがある。この2つはまあまあ使えそうだが、他のものはどうも検索時間
が結構かかるみたいである。
・Co.Co.Da : 日本ユニソフト、Sun,HP,4800,NEWS,Windows 95/NT、50 万円。
for Web Text と HTML 対象。http://cocoda.nuts.or.jp/ に詳しいドキュメン
トがある。評価パッケ−ジもある。
・Open Text : http://www.opentext.com/、INDY 用など。550 万円〜。当初は 800 万円
ぐらいした。対応するファイル形式は非常に多い。
・俊司 : 言語工学研究所、全文検索エンジン。http://www.mmjp.or.jp/gengo/。
http://www.recruit.co.jp/npon/ で使われている。
・Topic : 日本語版、米 Verity 社のアルゴリズム。plain-text, HTML 対象。
オムロンアルファテック(株) and or not 検索できる。
SEARCH'97 Information Server と名前を変えたらしい。142 万円から。
http://sdweb.omron-at.co.jp/
・Microsoft の Index Server : Windows NT 4.0 で稼働。IIS( Internet Information
Server ) の一部ということになっている。検索エンジンは米 Verity 社
を使用している。
・Netscape Enterprise Server :
Version 2.0 には英語版の米 Verity 社の検索エンジンが入っていた。日
本語対応にするためには、 上記 Topic を別途購入することとなっていた。
確か 2.1 で日本語対応の検索エンジンが備わった記事を見たような気が
する。ただし Word や Excel は対象外で制限が結構ある。 97年9月に
3.0 が出て、これで本格的に日本語対応、Word, Excel, PowerPoint など
検索対象になった。Catalog Server は複数の Enterprise Server からの
検索をできるようにするものらしい。
・Ingrid : NTTの検索システム。http://www.ingrid.org/
・PanaSearch/TS: 松下電気産業。Solaris, Windows NT など。
・SAVVY/EFS : Solaris, Windows NT など。
・MediaFinder : Sony のEWSのみ。HTML のみ対象。50 万円程度。
・Excite : http://www.excite.com/
・Interleaf5 : 日本語全文検索ビュ−イングツ−ルあり WorldView。
・QuickFINDER : パソコン用、12,800 円。ディアイエス。http://www.dis.co.jp/
・俊司くん : パソコン用、24,800 円。言語工学研究所。 など。
* 全文検索ソフトのフリ−ソフト
先ずは、フリ−の全文検索ソフトを作成している京都大学の馬場氏のURLを紹介したい。
http://www.kusastro.kyoto-u.ac.jp/~baba/wais/
ここでは馬場氏が全文検索ソフトの市販品とフリ−ソフトの状況について、網羅的に記載
している。「Software Design」'97/08 、馬場氏執筆の freeWAIS-sf + KAKASI + SFgate
の記事もある。彼の言によれば、この組み合わせの全文検索ソフトは市販品に全くひけを
とらないとのことである。難点はコンパイルがかなりめんどうなことである。またソニ−
の SSE-1.1 は評価に値するとも述べている。以下主なフリ−ソフトを挙げる
・WAIS wais-japanese とも呼ばれる。(製品版は富士通が販売している)
・freeWAIS WAIS の検索機能強化版。
・freeWAIS-sf 日本語形態素解析ソフトに KAKASI, ChaSen, JUMAN のどれかを使う。
・SSE-1.1 ソニ−(株)、http://www.sony.co.jp/search/download-j.html。
古いもの順に並べた。これらはいずれも日本語の検索をするために、日本の大学で作成さ
れた日本語形態素解析ソフトを使っている。JUMAN というのが最初に作られている。日本
語形態素解析とは何かについては、ここでは述べないが、ともかくアルファベットだけの
英語文章のマッチングに較べ、日本語ではややこしくなるだろうことは想像できるだろう。
WWWサ−バと検索ソフトのインタ−フェ−スは、SFgate とという CGI パッケ−ジを用
いる。これは Perl で書かれている。雛型が用意されているので、この設定はそう難しく
ないだろう。この雛型のスクリプトを見てみると、複数のWAISサ−バを指定すること
ができる。この検索結果は、同時に表示されることになる。 どうも SFgate は SSE では
使えないのか、SSE のドキュメントには使えるとは書かれていない。 多分 CGI プログラ
ムをちょっと書かないけないみたいである。
それぞれの特徴を少し述べておこう。論理検索について。SSE は and, or, not 演算がで
きると明示されているのだが、どうも WAIS 系は表現があやふやである。実際設定してみ
ないと分からない。対象にできるファイルは、WAIS 系は GIF などの画像、音声デ−タも
ファイル名をインデックスすることにより、扱うことが可能である。SSE の方は HTML と
plain-text のみとのことである。
(4) WWWと全文検索について '99/11〜
* Namazu による全文検索
[ 全文検索の現状 ]
およそ二年前、全文検索について調べた。その時すでにフリ−ソフトをはじめ多くのソフ
トがあった。フリ−ソフトの一つでも、とりあえずインスト−ルして試してみたかったが、
そのインスト−ル自体がめんどくさそうで、結局やらずじまいだった。しばらく前からど
うも Namazu というキ−ワ−ドが目につく。 Linux の Plamo Linux と Vine に最初から
Namazu が入っていて、ドキュメントの検索に便利といった記事だ。tknamazu という検索
画面のソフトも入っているので、すぐに使えるとのことだ。京大の馬場氏のサイトも久し
ぶりに覗いてみた。彼はその後も全文検索ソフトのワッチを続け本も出した。馬場氏いわ
く、全文検索ソフトは概ねフリ−ソフトで十分で、 今では Freya, SGSE, Namazu の3っ
つがいいのでないか。SSE や freeWAIS はもうすでに古く、お勧めではないようだ。 goo
で "全文検索 Namazu" で引いたら、Namazu を使った検索サイトが一杯出てきた。いつの
間にこんな使われるようになったのか。どうやら Namazu はかなり簡単に検索サイトを作
れるようである。
[ Namazu 概観 ]
Perl や nkf、gcc が揃っていたらインスト−ルは簡単。 別にウェブに組み込まなくても、
コマンドでちゃちゃっと試せるし。使うのもすごく簡単だった。以前 freeWAIS とか検討
したがその時はインスト−ル自体が難題だった。 Namazu これなら使えるというのが1日、
触ってみた感想である。Namazu の開発履歴を見てみた。 97年の7月から8月にかけて、
一挙にベ−スは作成してしまっている。すごい。以前調べた時には、どこにも Namazu っ
て出てなかった。人間やる気になればできるものだ。SI業者はアメリカなんかから一早
くアプリを見つけ出し、ちょっと日本語対応させて売ることばかりに腐心している。自前
で作ろうという気概が全くない。この Namazu の開発姿勢を、多いに見習うべきだと思う。
Namazu は日本語の文字の切り出しにデフォルトで、KAKASI というフリ−ソフトを使うよ
うになっている。KAKASI は漢字をかな、ローマ字に変換するプログラムで、 同様なのに
ChaSen というのもあり Namazu でも使える。両者の違いだとか辞書の追加などは、 それ
ぞれのドキュメントを見られたい。検索用インデックスのサイズのことだが、ドキュメン
トには、英文 75MB のインデックスは 29 MB とあった。これは小さいのでないか。 元フ
ァイルよりでかくなるのが、全文検索の常だ。要約も出してくれる。ただのテキストなら、
ファイル先頭の 200 文字をそのまま使うとある。v1.3.0.0 まではインデックスは追加の
みだった。それが v1.3.0.0 以降では、削除、更新もできるようになっている。
バイナリパッケ−ジもある。OS/2 用、Linux の RPM 用、Windows 95/98/2000/NT 用と揃
っている。それに便利なツ−ルもどんどん開発されている。 Tcl/Tk でコ−ディングされ
た tknamazu 検索ソフト、実行には別に lynx がいる。WWWブラウザがなくても、画面
ツ−ルから検索できるのだ。Mule に組込むための namazu.el というのもある。 他 Java
用とか Windows 用の検索ツ−ルもある。 これらは総て GNU General Public License に
よるフリ−ソフトである。しかし GNU の条文というのはよく分からないものだ。 ともか
くソ−ス込みで公開すること。商用利用はダメなこと。小生はそう思っているのだが。
[ Namazu ドキュメントからの特徴抜粋 ]
・and は省略してもいい。or, not, フレ−ズは "..." または { ... } 指定。
・( Linux or BsdOS ) and UNIX もといったのも可。(Linux or BsdOS) はだめ。
・ワイルドカ−ドも使える。例えば net*、*net、*net* といった検索。
・Subjext:, From:, Message-Id による検索。Mail と News の記事検索。
・Microsoft Word の文章にも対応できる。HTML に一度変換して使うそうだ。
・正規表現によるゆらぎのある検索。/インタ−?フェ[イ−]ス/ こんな指定。
・スラッシュ / を含んだ検索もできる。例えば 'TCP/IP'。
・アルファベットの大文字、小文字の区別はしない。
・HTML の は ALT で指定された文字列を検索対象にする。
・/usr/local/namazu/contrib/bnamazu は Perl による便利な検索プログラム。
・mknmz はディレクトリを再帰的にインデックスする。
・namazu は複数の検索インデックスを指定できる。
・他 namazu コマンドのオプション、いろいろあるよん。
% namazu -h : HTML 出力する。
% namazu -s, -S : 短く結果を表示する
% namazu -l, -e : 新しい順、古い順に表示する。
% namazu -o file : ファイルに書き出す。
* 参考資料
http://openlab.ring.gr.jp/namazu/manual.html
> 全文検索システム Namazu Version 1.3.0.10 説明書。Last Modified: 1999-08-31。
GPL2。Windows パソコンからプリントしたら22ぺ−ジもあった、
http://kakasi.namazu.org/
> KAKASI―漢字→かな(ロ−マ字)変換プログラム。kanji kana simple inverter。
GPL2。1999/10/29 KAKASI バ−ジョン 2.3.1 を公開。
ftp://kakasi.namazu.org/pub/kakasi/。
「日本語全文検索システムの構築と活用」 馬場肇、ソフトバンク
> '98/09/24 発刊。2,800 円、税別。よしだともこさんが応援している。
* かかしのインスト−ル、KAKASI
KAKASI を先にいれること。Perl や gcc などのバ−ジョンも一応、確認しておくこと。
% gcc -v
Reading specs from /usr/local/lib/gcc-lib/mips-sgi-irix5.3/2.7.2.3/specs
gcc version 2.7.2.3
% perl -v
This is perl, version 5.004_04 built for IP22-irix
% ftp kakasi.namazu.org
ftp> cd /pub/kakasi
drwxr-xr-x 1024 Oct 29 14:33 .obsolete 以前のバ−ジョン。
-rw-r--r-- 196369 Oct 29 12:59 kakasi-2.3.1-nodict.tar.gz 辞書を含まない。
-rw-r--r-- 1069459 Oct 29 13:05 kakasi-2.3.1.tar.gz 辞書を含むパッケ−ジ。
-rw-r--r-- 873656 Jun 26 1994 kakasidict.940620.gz 辞書のみ。
-rw-r--r-- 21906 Oct 29 13:08 patch-2.3.1.gz
ftp> get kakasi-2.3.1.tar.gz
% zcat kakasi-2.3.1.tar.gz | tar xvf -
% cd kakasi-2.3.1; ls
AUTHORS NEWS aclocal.m4 install-sh* mkinstalldirs*
COPYING ONEWS config.guess* itaijidict src/
ChangeLog README config.h.in kakasidict stamp-h.in
INSTALL README-ja config.sub* lib/
INSTALL-ja TODO configure* ltconfig*
Makefile.am acconfig.h configure.in ltmain.sh
Makefile.in acinclude.m4 doc/ missing*
% setenv
PATH=.:/usr/local/bin:/bin: ... << /usr/local/bin に GNU の make と cc と ld
が入っている。
% sh ./configure << 今 C-Shell の環境。B-Shell でやること。
% make
引き数を指定してください << こんなエラ−でとまる。 ドキュメントを見た
make[2]: *** [kanwadict] Error 1 ら、Makefile の test -e を test -f にせよ
| とあった。
Makefile
----------------------------------------
|kanwadict:
| if test -e kakasidict; then \ << -e を -f に変更すること。
% make install 以下入ったファイル。
/usr/local/bin/kakasi, mkkanwa, atoc_conv, rdic_conv, wx2_conv
/usr/local/lib/libkakasi.la, libkakasi.a
/usr/local/lib/libkakasi.so.3.0 << リンク libkakasi.so.3 , libkakasi.so
/usr/local/share/kakasi/kanwadict, itaijidict,
/usr/local/include/libkakasi.h
<< 小生のミスかな >>
make で ld がおかしかった。/usr/local/bin/ld もだめ。/bin/ld もだめ。GNU の make
や gcc がいかんのか。gcc は /usr/local/lib/gcc-lib/mips-sgi-irix5.3/2.7.2.3 を見
るようになっている。 そこの ld と /usr/local/bin/ld のファイルサイズが違っていた。
2.7.2.3 の ld を /usr/local/bin にもってきたら、うまく通った。ひょとしてこれまで
/usr/local/bin/ld はダメで /bin/ld はいいとか書いてきたが、 このせいだったのかな。
% cd /usr/local/lib/gcc-lib/mips-sgi-irix5.3/2.7.2.3; ls
SYSCALLS.c.X cc1obj cpp ld libobjc.a
cc1 cc1plus include libgcc.a specs
* なまずのインスト−ル、Namazu
http://openlab.ring.gr.jp/namazu/ より namazu-1.3.0.10.tar.gz をダウンロ−ドして
くる。ファイルサイズは約 337 Kbytes。
% zcat namazu-1.3.0.10.tar.gz | tar xvf -
% cd namazu-1.3.0.10; ls
COPYING INSTALL README.ja VERSION contrib/ lib/ src/
ChangeLog README.en ToDo bin/ doc/ misc/
% ls -F contrib
MHonArc-Japanize-patch-1.6.gz namazu.el-1999.05.10.gz
NamazuJAVA.030.tar.gz pnamazu-98.12.16.tgz
bnamazu* tknamazu-1.11.tar.gz
% cd src
% ./confgiure << /usr/local/bin にかかしのモジュ−ルが入っているか見る。
% make
% make install << インスト−ルすると下記のように展開される。
[/usr/local/namazu]
|-[index]- 空なにもなし。 これら7個のコマンドはあまり使わない。
|-[bin]--- mknmz, namazu, ↓
| wdnmz, rvnmz, clnmz, vfnmz, mailutime, gcnmz, gtnmz
|
|-[doc]--- COPYING, ChangeLog, ToDo
| |-[en]-- README.en, intro.html, manual.html
|
|-[lib]--- NMZ.body.en, NMZ.foot.en, NMZ.head.en,
| NMZ.body.ja, NMZ.foot.ja, NMZ.head.ja,
| namazu.conf-dist
|
|-[contrib]-- MHonArc-Japanize-patch-1.6.gz, namazu.el-1999.05.10.gz
NamazuJAVA.030.tar.gz, pnamazu-98.12.16.tgz
bnamazu, tknamazu-1.11.tar.gz
[ namazu.cgi のインスト−ル ]
WWWサ−バとやりとりする namazu.cgi は、 Makefile を見ると namazu をコピ−した
だけである。 % make install_cgi とやるとデフォルトではル−トに /cgi-bin ディレク
トリを作って、そこに入ることになる。 Makefile の CGIDIR を適当な場所に変えること。
/usr/local/source/namazu-1.3.0.10/src/Makefile
----------------------------------------------
|CGIDIR = /cgi-bin
|namazu.cgi: namazu
| cp namazu namazu.cgi
|install_cgi: all
| if [ ! -d $(CGIDIR) ]; then \
| mkdir -p $(CGIDIR); \
| fi
| cp namazu.cgi $(CGIDIR)
[ 検索対象拡張子 ]
どうやって解釈するのかな。.*_default ってどういみ意味?。 自分としては拡張子のな
いただのテキストファイルも対象に入れたいわけだ。関係ありそうなところ出してみた。
/usr/local/source/namazu-1.3.0.10/src/Makefile
----------------------------------------------
|OPT_TARGET_FILE = .*\\.html?|.*\\.txt|.*_default
|OPT_DENY_FILE = .*\\.gif|.*\\.(jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\.
|OPT_DEFAULT_FILE = _default .*|\\x23.*|NMZ\\..*
|mknmz: mknmz.pl
| rm -f $@
| sed -e 's!%OPT_TARGET_FILE%!$(OPT_TARGET_FILE)!g' \
| -e 's!%OPT_DENY_FILE%!$(OPT_DENY_FILE)!g' \
| -e 's!%OPT_DEFAULT_FILE%!$(OPT_DEFAULT_FILE)!g' \
(5) Namazu のWWWサ−バへの実装 '99/11〜
* CGI による結合
スクリプト